class Student:
    # 属性（特征）：
    school = "湖北师范大学文理学院"

    def __init__(self,id,name,grade):
        self.id = id
        self.name = name
        self.grade = grade

    # 方法（行为）：

    # 实例方法：直接定义在类中的方法，第一个参数是self
    # 实例方法可以使用实例属性、类属性
    def show(self):
        print(f"学号：{self.id},姓名:{self.name},属于{Student.school}")

    # 类方法：需要使用@classmethod进行修饰，第一参数是cls
    # 类方法只能访问类属性
    @classmethod
    def change_school_name(cls,new_school_name):
        cls.school = new_school_name

    # 静态方法：需要使用staticmethod
    # 不能访问对象和类的任何属性,生成一些工具函数
    @staticmethod
    def grade_level(score):
        if score >= 90:
            print("优秀")
        elif score >= 80:
            print("良好")
        else:
            print("合格")

xiaolong = Student("1001","小龙","大二")
xiaohu = Student("1002","小虎","大三")
xiaolong.show()
xiaohu.show()

# 通过类方法，修改类属性：
Student.change_school_name("湖北师范大学")

# 调用静态方法：类名.静态方法名(参数)
Student.grade_level(90)